package j2024.j202410;

import java.util.Stack;

public class j1007 {
    /**
     * 20. 有效的括号
     * 给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串 s ，判断字符串是否有效。
     *
     * 有效字符串需满足：
     *
     * 左括号必须用相同类型的右括号闭合。
     * 左括号必须以正确的顺序闭合。
     * 每个右括号都有一个对应的相同类型的左括号。
     * @param s
     * @return
     */
    public boolean isValid(String s) {
        Stack<Character> stack= new Stack<>();
        for(int i = 0;i < s.length();i++){
            char ch = s.charAt(i);
            //左括号入栈
            if(ch == '('||ch =='{'||ch =='['){
                stack.push(ch);
            }else{
                if(stack.empty()){
                    return false;
                }else{
                    char chL = stack.peek();
                    if(chL == '('&&ch == ')' || chL =='{'&&ch == '}'||
                            chL =='['&&ch==']'){
                        stack.pop();
                    }else{
                        return false;
                    }
                }
            }
        }
        return stack.empty();
    }
}
